package com.bamboo.tool.entity;

import com.bamboo.tool.enums.DataType;
import lombok.Data;
import net.minidev.json.annotate.JsonIgnore;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Create by GuoQing
 * Date 2022/8/5 15:35
 * Description
 */
@Data
public class JavaFieldInfo implements Serializable {
    /**
     * 属性名
     */
    private String fieldName;
    /**
     * 属性类型
     */
    private DataType fieldType;

    /**
     * 集合的类型
     */
    private DataType arrayType;
    /**
     * 是否忽略
     */
    private Boolean isIgnore = false;
    /**
     * 是否必须
     */
    private boolean required = false;
    /**
     * 默认值
     */
    private Object defaultValue;
    /**
     * 示例值
     */
    private Object exampleValue;
    @JsonIgnore
    /**
     * 是否为url参数
     */
    private boolean isPathParam = false;
    @JsonIgnore
    /**
     * 是否为请求头参数
     */
    private boolean isHeadParam = false;
    @JsonIgnore
    /**
     * 是否为Query参数
     */
    private boolean isQueryParam = false;
    @JsonIgnore
    /**
     * 是否为Query参数
     */
    private boolean isBodyParam = false;
    /**
     * 最大长度
     */
    private String maxLength;

    /**
     * 最小长度
     */
    private String minLength;
    /**
     * 如果是枚举类型，则用来储存枚举列表
     */
    private List<String> enums;

    /**
     * 下级属性集合
     */
    private List<JavaFieldInfo> children = new ArrayList<>();

    /**
     * 描述集合
     */
    private Map<String, String> desc = new HashMap<>();

    public JavaFieldInfo() {
    }

}
